/**
 * 
 */
package com.googlecode.xcarve.netty.server;

import com.googlecode.xcarve.wrapper.ServiceWrapper;

/**
 * @author xinyun.d
 * 2014年10月1日
 */
public class DynamicProxy<T> {

	public ServiceProxy getServiceProxy(Class<?> service,T serviceImpl){
		final ServiceWrapper serviceWrapper = ServiceWrapper.getWrapper(service);
		return new AbstractServiceProxy<T>(serviceImpl) {

			@Override
			Object doInvoke(T serviceProxy, String methodName,
					Class<?>[] paramTypes, Object[] paramValues)
					throws Throwable {
				return serviceWrapper.invokeMethod(serviceProxy, methodName, paramTypes, paramValues);
			}
		};
	}
	
}
